package com.skh.array;

import java.util.ArrayList;
import java.util.List;

/**
 * 杨辉三角 II
 */
public class GetRow {

    /**
     * 给定一个非负索引 k，其中 k ≤ 33，返回杨辉三角的第 k 行。
     * 在杨辉三角中，每个数是它左上方和右上方的数的和。
     * 示例:
     *
     * 输入: 3
     * 输出: [1,3,3,1]
     */

    public static List<Integer> getRow(int rowIndex) {
        List<List<Integer>> result = new ArrayList<>();

        List<Integer> firstRow = new ArrayList<>();
        firstRow.add(1);
        result.add(firstRow);

        for (int i = 1; i <= rowIndex; i++) {
            List<Integer> row = new ArrayList<>();
            List<Integer> prevRow = result.get(i - 1);
            row.add(1);

            for (int j = 1; j < i; j++) {
                row.add(prevRow.get(j) + prevRow.get(j - 1));
            }

            row.add(1);
            result.add(row);
        }

        return result.get(rowIndex);
    }


    public static void main(String[] args) {
        List<Integer> row = GetRow.getRow(3);
        System.out.println("row = " + row);
    }
}
